package com.sgc.view;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import com.architecture.view.MensagemEnum;
import com.architecture.view.PadraoManutencaoMB;
import com.architecture.view.UtilWeb;
import com.archtecture.control.exceptions.NegocioException;
import com.sgv.model.entities.CaixaModel;
import com.sgv.model.persistence.SGVCaixaFacadeLocal;
import com.sgv.model.persistence.UsuarioFacadeLocal;

@ManagedBean
@ViewScoped
public class CaixaAtendenteMB extends PadraoManutencaoMB<CaixaModel> {

	@EJB
	private SGVCaixaFacadeLocal caixaFacade;

	@EJB
	private UsuarioFacadeLocal usuarioFacade;

	@Override
	protected CaixaModel getInstance() {
		CaixaModel lModel = new CaixaModel();
		return lModel;
	}

	@PostConstruct
	public void iniciarComponentes() {

		setModelCad(caixaFacade.obterUltimoCaixa());

		// Abertura de caixa
		if (getModelCad().getDataAbertura() == null || getModelCad().getDataFechamento() != null) {
			setModelCad(null);
		}
	}

	public boolean isBoolFechamento() {
		return getModelCad().getDataAbertura() != null && getModelCad().getDataFechamento() == null;
	}

	public void executarAbrirCaixa() {
		try {
			caixaFacade.abrirCaixa(getModelCad());
			iniciarComponentes();
			UtilWeb.enviarMensagem(MensagemEnum.INFO_CAIXA_SUCESSO_ABERTURA);
			// TODO Redirect para vendas
		}
		catch (NegocioException e) {
			UtilWeb.tratarException(e);
		}
	}

	public void executarFecharCaixa() {
		try {
			caixaFacade.fecharCaixa(getModelCad());
			iniciarComponentes();
			UtilWeb.enviarMensagem(MensagemEnum.INFO_CAIXA_SUCESSO_FECHAMENTO);
		}
		catch (NegocioException e) {
			UtilWeb.tratarException(e);
		}

	}
}
